import util from "../../util";
import parent from '../../others/parent/parent';

export default class event extends parent{
    constructor(path) {
        super(event, util.api.Event);
    }
    static create(record, path){
        let object=new event(path);
        if(!!record){
            object.setRecord(record);
        };
        return object;
    }
    /***
     * 新增
     * @param record
     * @returns {Promise<boolean|*>}
     */
    async add(record=this.record){
        console.log("file: event.js:21  event  add  record:", record)
        if(!record||!record.category||!record.name||record.category==''||record.name==''){
            return false;
        }
        let newRecord=Object.assign(this.clz.tpl(),record);
        let result = await this.api.add(newRecord).then(data=>{
            if(!!data){
                this.setRecord(data);
                return true;
            }else{
                return false;
            }
        }).catch(err=>{
            return false;
        });
        return result;
    }
    serviceItemTpl() {
        return event.serviceItemTpl()
    }
    /* 新增模板 */
    static tpl(){
        return {
            id: null,
            category: "标准事件",
            name: "",
            event: {
                globalState:[//用于保存事件过程中的全局变量
                    // {name:'a',value:''}//例子：全局变量，name是配置事件时定义的，value是每次需要返回的方法的结果
                ],
                params:[
                    // {name:'p',value:'',path:''}//存放前端获取数据的地址，name是预先定义好的，所action的需要而定，value是配置页面path后获取的
                ],
                globalScalar:[//全局标量表，不用变量引用
                    // {name:'',value:''}//name，value都是配置时定义好的
                ],
                condtion:'',//是事件执行的条件
                service:[],
                back:{
                    isBack:true,//整个事件结束后是否需要返回值
                    state:[
                        // {
                        //     type:'record',//共有四种类型：record：map格式，单条记录；records：listMap格式，多条记录；map：map格式，kv组合；object：单值
                        //     name:'',//来自 globalState 里的定义变量名，
                        //     value:''//返回值
                        // }
                    ]
                }
            },
            version: "1.0",
            published: true,
            comments: "",
        }
    }
    static serviceItemTpl() {
        return {
            model: null,//action属于哪个模型
            action:'',//通过统一url：‘business’请求action方法，
            state:[  //变量表: 需要寻找获取的
                // {
                //     name:'s',
                //     value:'',
                //     pointer:{//pointer定义了sql，锁定记录
                //         model:'',
                //         type:'',
                //         className:'',
                //         condition:''
                //     }
                // }
            ],
            scalar:[//标量表
                // {name:'',value:''}//name，value都是配置时定义好的
            ],
            refs:[//引用表，值为变量引用，从 globalState, params, globalScalar, Scalar, state 中引入，方法的传参由此产生
                // {name:'',value:''}//name，value都是配置时定义好的
            ],
            result:{
                isResult:true,//这个事件方法是否需要保存返回值
                state:[
                    // {
                    //     name:'',//来自于 globalState 里定义的变量名称
                    //     path:''//通过path获取值，并且存入变量
                    // }
                ]
            }
        }
    }
}
